import { Controller } from 'egg';
//import {Op} from 'sequelize';
export default class  ProductController extends Controller {
    
    //产品中心类型列表接口
    /**
     * @api {get} /product/cate_list 产品类型列表
     * @apiName productCateList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 产品类型列表
     * @apiParam {Number} is_more  是否展示更多0否1是 默认0
     * @apiParam {Number} cur_index  默认展示长度(必传)
     * @apiParam {Number} category_id  类型ID(is_more为1时使用)
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object[]} data 查询数组集合
     * @apiSuccess {String} data.category_name 类型名称
     * @apiSuccess {String} data.category_id 产品类型ID
     * @apiSuccess {Object[]} data.product_list 产品列表长度为3
     * @apiSuccess {String} data.product_list.product_id 产品ID 
     * @apiSuccess {String} data.product_list.product_name 产品名称 
     * @apiSuccess {Object[]} data.sub_list 值类型列表
     * @apiSuccess {String} data.sub_list.sub_id 子类型ID 
     * @apiSuccess {String} data.sub_list.sub_name 子类型名称 
     * @apiSuccess {Object[]} more 更多的产品数据(is_more为1时则使用)
     * @apiSuccess {Number} more.product_id 产品ID
     * @apiSuccess {Number} more.product_name 产品名称
     */
    /**
     * 产品中心类型列表：
     * 按照产品查询所有分类列表，完成返回所有的产品的类型列表
     */
    async cate_list(){
        const {ctx,app}= this;
        const {query} = ctx.request;
        const {Product} = app.model;
        try {
            
            if(!parseInt(query.is_more)){
                let list=await ctx.service.common.product_cate_list(Product,query,{},'product')
                ctx.body=ctx.helper.success_result("查询成功",list);
            }else{
                if(!query.category_id){
                    return ctx.body=ctx.helper.error_result("需要指定类型ID"); 
                }
                let result=await Product.findAll({
                    where:{
                        category_id:query.category_id
                    },
                    offset:parseInt(query.cur_index),
                    order:[['create_time','DESC']]
                })
                result=JSON.parse(JSON.stringify(result));
                return ctx.body={
                    code:200,
                    message:'查询成功',
                    more:result,
                    data:[]
                }
            }
        } catch (error) {
            return ctx.body=ctx.helper.error_result("查询失败")
        }
    }
    //产品中心列表接口
    /**
     * @api {get} /product/list 产品列表
     * @apiName productList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 产品列表
     * @apiParam {Number} category_id  产品类型ID
     * @apiParam {Number} sub_id  产品子类型ID
     * @apiParam {Number} page  页面位置
     * @apiParam {Number} page_size  页面尺寸
     * @apiParam {Number} is_page  是否分页0否，1是
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object[]} data 查询结果结构
     * @apiSuccess {Number} data.product_id 产品ID
     * @apiSuccess {String} data.product_name 产品名称
     * @apiSuccess {String} data.product_img 产品图片
     * @apiSuccess {String} data.product_content 产品内容
     */
    /**
     * @api {get} /customer/list 客户列表 （暂未实现）
     * @apiName customerList
     * @apiGroup Gaode
     * @apiVersion 1.0.0 
     * @apiDescription 客户列表
     * @apiParam {Number} type  客户类型 1本科院校 2专科院校3远程教育
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 客户列表
     * @apiSuccess {Object[]} data.customer_list 客户列表默认为type为1的客户数据
     * @apiSuccess {Number} data.customer_list.customer_id 客户支持ID
     * @apiSuccess {String} data.customer_list.customer_img 客户图片
     * @apiSuccess {String} data.customer_list.customer_name 客户名称
     * @apiSuccess {String} data.customer_list.customer_content 客户介绍
     * @apiSuccess {Object[]} data.types 客户类型数组
     * @apiSuccess {Number} data.types.type 客户类型
     * @apiSuccess {String} data.types.name 客户类型名称
     * 
     */
    async list(){
        const {ctx,app}= this;
        const {query} = ctx.request;
        //const {Product,Resource,Category,Sub} = app.model;
        //const {Product,Resource} = app.model;
        const {Product} = app.model;
        try {
            if(!query.category_id&&!query.sub_id){
                return ctx.body=ctx.helper.error_result("没有指定类型ID或子类型ID")
            }
            let condition={};
            if(query.category_id){
                condition['category_id']=query.category_id;
            }
            if(query.sub_id){
                condition['sub_id']=query.sub_id;
            }
            let product_list=await ctx.service.common.product_list(Product,condition,1,'product')
            return ctx.body=ctx.helper.success_result("查询成功",product_list) ;
        } catch (error) {
            
        }
        ctx.body=ctx.helper.error_result("查询失败")
    }
    //产品详情
    /**
     * @api {get} /product/info 产品详情
     * @apiName productInfo
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 产品详情
     * @apiParam {Number} product_id  产品ID
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果结构
     * @apiSuccess {String} data.product_name 产品名称
     * @apiSuccess {String} data.product_id 产品ID
     * @apiSuccess {Object[]} data.resource_list 产品资源列表
     * @apiSuccess {String} data.resource_list.resource_id 资源ID
     * @apiSuccess {String} data.resource_list.resource_name 资源名称
     * @apiSuccess {String} data.resource_list.resource_url 资源路径
     * @apiSuccess {String} data.resource_list.resource_content 资源内容
     * @apiSuccess {String} data.create_time 产品创建时间
     * 
     */
    async info(){
        const {ctx,app}= this;
        const {query} = ctx.request;
        const {Product} = app.model;
        try {
            if(!query.product_id){
                return ctx.body=ctx.helper.error_result("没有指定产品ID")
            }
            let condition={
                product_id:query.product_id
            };
            
            let list=await ctx.service.common.product_info(Product,condition,1)
            return ctx.body=ctx.helper.success_result("查询成功",list) ;
        } catch (error) {
            
        }
        ctx.body=ctx.helper.error_result("查询失败")

    }
}

